package com.sywb.chuangyebao.bean;

import android.text.TextUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;
import com.sywb.chuangyebao.Constants;

import org.bining.footstone.adapter.entity.MultiItemEntity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * 提问信息
 */
public class Question extends MultiItemEntity implements Serializable {

    public int question_id;// 提问ID
    public int category_id;// 所属分类ID
    public String categoryName;// 所属分类名称
    public long topic_id;// 所属话题ID
    public String topic_name;// 所属话题名称
    public String title;// 提问内容
    public List<QARichInfo> richInfoList;// 提问@用户列表
    public List<String> pic;// 图片路径列表
    public String audio;// 语音路径
    public String audioLength;// 语音时长
    public long create_time;// 提问时间
    public int isRecommend;// 是否推荐的提问
    public int answer_num;// 回答数量

    public String url;//分享链接
    public boolean isCollect;// 是否收藏
    public int collectCount;// 收藏数量

    public int user_id;// 提问人ID
    public String display_name;// 提问人名称
    public String avatar;// 提问人头像
    // public int user_group_id;// 提问人类型(已弃用,使用user_role) 0:未知 1:普通用户 2:达人 3:导师（专家） 5:创业顾问 6:项目号 7:服务商
    public String user_role; // 用户角色(多选) 0:未知 1:普通用户 2:达人 3:导师（专家） 5:创业顾问 6:项目号 7:服务商

    public boolean isConcern;// 是否已关注
    public boolean isMine;// 是否自己发布的问题

    public User consult;// 在线咨询客服信息

    public void setItemType() {
        if (!TextUtils.isEmpty(audio)) {
            itemType = Constants.QANDA_MEDIA;
            return;
        }
        if (pic != null && pic.size() > 0) {
            if (pic.size() == 1) {
                itemType = Constants.QANDA_PIC_ONE;
            } else {
                itemType = Constants.QANDA_PIC_THREE;
            }
            return;
        }
        itemType = Constants.QANDA_TEXT;
    }

    public void setTopic() {
        if (topic_id > 0 && topic_name != null && topic_name.length() > 0) {
            String topic = "#" + topic_name + "#";

            boolean isAdd = true;
            if (title.startsWith(topic)) {
                if (richInfoList != null && richInfoList.size() > 0) {
                    HashMap<Integer, QARichInfo> richMap = new HashMap<>();

                    for (int i = 0; i < richInfoList.size(); i++) {
                        QARichInfo richInfo = richInfoList.get(i);
                        if (richInfo == null || TextUtils.isEmpty(richInfo.richName)) {
                            continue;
                        }
                        richMap.put(richInfo.position, richInfo);
                    }

                    if (richMap.containsKey(0)) {
                        QARichInfo richInfo = richMap.get(0);
                        if (richInfo.richName.equals(topic)) {
                            isAdd = false;
                        }
                    }
                }
            } else {
                title = topic + title;
            }

            if (isAdd) {
                QARichInfo qaRichInfo = new QARichInfo();
                qaRichInfo.uid = (int) topic_id;
                qaRichInfo.richName = topic;
                qaRichInfo.position = 0;

                if (richInfoList == null) {
                    richInfoList = new ArrayList<>();
                } else {
                    for (QARichInfo q : richInfoList) {
                        q.position = q.position + topic.length();
                    }
                }
                richInfoList.add(qaRichInfo);
            }
        }
    }

    public String getShowName() {
        if (!TextUtils.isEmpty(display_name)) {
            return display_name;
        }
        return "";
    }

    public String getShowAvatar() {
        return avatar;
    }

    public int getUserRole() {
        if (!TextUtils.isEmpty(user_role)) {
            HashMap<Integer, String> userRole = JSON.parseObject(user_role, new TypeReference<HashMap<Integer, String>>() {
            });


            if (userRole == null) {
                return Constants.USER_TYPE_NORMAL;
            }
            if (userRole.containsKey(Constants.USER_TYPE_V)) {
                return Constants.USER_TYPE_V;
            } else if (userRole.containsKey(Constants.USER_TYPE_PROJECT)) {
                return Constants.USER_TYPE_PROJECT;
            } else if (userRole.containsKey(Constants.USER_TYPE_SERVICE)) {
                return Constants.USER_TYPE_SERVICE;
            } else if (userRole.containsKey(Constants.USER_TYPE_TUTOR)) {
                return Constants.USER_TYPE_TUTOR;
            }
        }
        return Constants.USER_TYPE_NORMAL;
    }

    public int project_id;

    public int progress;
    public int max;
}
